|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.lang.Thread
javax.realtime.RealtimeThread
javax.realtime.NoHeapRealtimeThread
A NoHeapRealtimeThread
is a specialized form of
RealtimeThread
.
Because an instance of
NoHeapRealtimeThread
may immediately preempt any
implemented garbage collector, logic contained in its run() is never
allowed to allocate or reference any object allocated in the heap. At the byte-code level, it is illegal for a reference to an object allocated in heap to appear on a no-heap real-time thread's operand stack.
Thus, it is always safe for a
NoHeapRealtimeThread
to interrupt the garbage
collector at any time, without waiting for the end of the garbage
collection cycle or a defined preemption point. Due to these restrictions,
a NoHeapRealtimeThread
object must be placed in a memory area such that thread logic may
unexceptionally access instance variables and such that Java methods on
Thread (e.g., enumerate and join) complete normally except where
execution would cause access violations. The constructors of
NoHeapRealtimeThread
require a reference to
ScopedMemory
or
ImmortalMemory
.
When the thread is started, all execution occurs in the scope of the
given memory area. Thus, all memory allocation performed with the new
operator is taken from this given area.
Field Summary |
Fields inherited from class javax.realtime.RealtimeThread |
activePhaseToDo, currentEventNotice, currentPriority, defaultPriority, endTime, lastPriorityChangeNanos, lastWaitStart, logic, memoryArea, memoryParameters, processingGroup, releaseParameters, resourcesHeld, scheduler, scheduling, startAbsoluteMillis, started, startTime, terminated, timeWeightedPriority, waitingForResource, waitTime |
Fields inherited from class java.lang.Thread |
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY |
Constructor Summary | |
NoHeapRealtimeThread(SchedulingParameters scheduling,
MemoryArea area)
Create a NoHeapRealtimeThread . |
|
NoHeapRealtimeThread(SchedulingParameters scheduling,
ReleaseParameters release,
MemoryArea area)
Create a no-heap real-time thread with the given characteristics. |
|
NoHeapRealtimeThread(SchedulingParameters scheduling,
ReleaseParameters release,
MemoryParameters memory,
MemoryArea area,
ProcessingGroupParameters group,
java.lang.Runnable logic)
Create a real-time thread with the given characteristics and a Runnable . |
|
NoHeapRealtimeThread(java.lang.String name,
SchedulingParameters scheduling,
MemoryArea area)
Constructor. |
|
NoHeapRealtimeThread(java.lang.String name,
SchedulingParameters scheduling,
ReleaseParameters release,
MemoryArea area)
Constructor. |
|
NoHeapRealtimeThread(java.lang.String name,
SchedulingParameters scheduling,
ReleaseParameters release,
MemoryParameters memory,
MemoryArea area,
ProcessingGroupParameters group,
java.lang.Runnable logic)
Constructor. |
Methods inherited from class java.lang.Thread |
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, yield |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public NoHeapRealtimeThread(java.lang.String name, SchedulingParameters scheduling, MemoryArea area)
Not currently implemented
name
- The name of this
NoHeapRealtimeThread
scheduling
- The
SchedulingParameters
associated with this
(and possibly other instances of
Schedulable
).
If scheduling is null
, the default is a copy of the
creator's scheduling parameters created in the same memory area
as the new
NoHeapRealtimeThread
.area
- The MemoryArea
associated with this. If area is null
, an
IllegalArgumentException
is thrown.
java.lang.IllegalArgumentException
- Thrown if the
parameters are not compatible with the associated scheduler,
if area
is null
, if area
is
heap memory, if area
, release
or scheduling
is allocated in heap memory, or if this
is in heap memory.
IllegalAssignmentError
- Thrown if the new
NoHeapRealtimeThread
instance cannot hold a reference to non-null
values of
scheduling
and release
, or if those parameters cannot hold a
reference to
the new
NoHeapRealtimeThread
.public NoHeapRealtimeThread(SchedulingParameters scheduling, MemoryArea area)
NoHeapRealtimeThread
.
This constructor is equivalent to
NoHeapRealtimeThread(scheduling, null, null, area, null, null)
.Not currently implemented
scheduling
- The
SchedulingParameters
associated with this
(and possibly other instances of
Schedulable
).
If scheduling is null
, the default is a copy of the
creator's scheduling parameters created in the same memory area
as the new
NoHeapRealtimeThread
.area
- The MemoryArea
associated with this. If area is null
, an
IllegalArgumentException
is thrown.
java.lang.IllegalArgumentException
- Thrown if the parameters
are not compatible with the associated scheduler, if area
is null
,
if area
is heap memory, if
area
or scheduling
is allocated in heap
memory, or if this is in heap memory.
IllegalAssignmentError
- Thrown if the new
NoHeapRealtimeThread
instance cannot hold
a reference to scheduling
or area
, or if either parameter
cannot hold a reference to the new
NoHeapRealtimeThread
.public NoHeapRealtimeThread(SchedulingParameters scheduling, ReleaseParameters release, MemoryArea area)
NoHeapRealtimeThread(scheduling, release, null, area, null,
null)
.Not currently implemented
scheduling
- The
SchedulingParameters
associated with this
(and possibly other instances of
Schedulable
).
If scheduling is null
, the default is a copy of the
creator's scheduling parameters created in the same memory area
as the new
NoHeapRealtimeThread
.release
- The
ReleaseParameters
associated with this
(and possibly other instances of
Schedulable
). If release is null
the it defaults to the a copy of the creator's release
parameters created in the same memory area as the new
NoHeapRealtimeThread
.area
- The MemoryArea
associated with this. If area is null
, an
IllegalArgumentException
is thrown.
java.lang.IllegalArgumentException
- Thrown if the parameters
are not compatible with the associated scheduler, if area
is null
,
if area
is heap memory, if area
,
release
or scheduling
is allocated
in heap memory, or if this is in heap memory.
IllegalAssignmentError
- Thrown if the new
NoHeapRealtimeThread
instance cannot hold a reference to
non-null values of scheduling
and release
,
or if those
parameters cannot hold a reference to the new
NoHeapRealtimeThread
.public NoHeapRealtimeThread(java.lang.String name, SchedulingParameters scheduling, ReleaseParameters release, MemoryArea area)
Not currently implemented
name
- The name of this
NoHeapRealtimeThread
scheduling
- The
SchedulingParameters
associated with this
(and possibly other instances of
Schedulable
).
If scheduling is null
, the default is a copy of the
creator's scheduling parameters created in the same memory area
as the new
NoHeapRealtimeThread
.release
- The
ReleaseParameters
associated with this
(and possibly other instances of
Schedulable
). If release is null
the it defaults to the a copy of the creator's release
parameters created in the same memory area as the new
NoHeapRealtimeThread
.area
- The MemoryArea
associated with this. If area is null
, an
IllegalArgumentException
is thrown.
java.lang.IllegalArgumentException
- Thrown if the parameters
are not compatible with the associated scheduler, if
area
is null
, if area
is heap memory, if area
, scheduling
or
release
is allocated in heap memory, or if this is in
heap memory.
IllegalAssignmentError
- Thrown if the new
NoHeapRealtimeThread
instance cannot hold references to non-null
values of scheduling
, release
,
memory
and group
, or if those
parameters cannot hold a reference to the new
NoHeapRealtimeThread
.public NoHeapRealtimeThread(SchedulingParameters scheduling, ReleaseParameters release, MemoryParameters memory, MemoryArea area, ProcessingGroupParameters group, java.lang.Runnable logic)
Runnable
. The thread group of the new thread is
(effectively) null
.The newly-created no-heap real-time thread is associated with the scheduler in effect during execution of the constructor.
Not currently implemented
scheduling
- The
SchedulingParameters
associated with this
(and possibly other instances of
Schedulable
).
If scheduling is null
, the default is a copy of the
creator's scheduling parameters created in the same memory area
as the new
NoHeapRealtimeThread
.release
- The
ReleaseParameters
associated with this
(and possibly other instances of
Schedulable
). If release is null
the it defaults to the a copy of the creator's release
parameters created in the same memory area as the new
NoHeapRealtimeThread
.memory
- The
MemoryParameters
associated with this
(and possibly other instances of
Schedulable
). If memory
is
null
, the new
NoHeapRealtimeThread
will have a
null
value for its memory parameters, and the
amount or rate of memory allocation is unrestricted.area
- The MemoryArea
associated with this. If area is null
, an
IllegalArgumentException
is thrown.group
- The
ProcessingGroupParameters
associated with this (and possibly other instances of
Schedulable
).
If null
, the new
NoHeapRealtimeThread
will not be associated
with any processing group.logic
- The Runnable
object whose run()
method will serve as the logic for the new
NoHeapRealtimeThread
. If logic is
null
, the run()
method in the new object
will serve as its logic.
java.lang.IllegalArgumentException
- Thrown if the parameters
are not compatible with the associated scheduler, if area
is null
, if area
is heap memory, if
area
, scheduling
, release
,
memory
or group
is allocated in heap memory,
if this is in heap memory, or if logic
is in heap memory.
IllegalAssignmentError
- Thrown if the new
NoHeapRealtimeThread
instance cannot hold
references to non-null values of scheduling
,
release
,
memory
and group
,
or if those parameters cannot hold a
reference to the new
NoHeapRealtimeThread
.public NoHeapRealtimeThread(java.lang.String name, SchedulingParameters scheduling, ReleaseParameters release, MemoryParameters memory, MemoryArea area, ProcessingGroupParameters group, java.lang.Runnable logic)
Not currently implemented
name
- The name of this
NoHeapRealtimeThread
scheduling
- The
SchedulingParameters
associated with this
(and possibly other instances of
Schedulable
).
If scheduling is null
, the default is a copy of the
creator's scheduling parameters created in the same memory area
as the new
NoHeapRealtimeThread
.release
- The
ReleaseParameters
associated with this
(and possibly other instances of
Schedulable
). If release is null
the it defaults to the a copy of the creator's release
parameters created in the same memory area as the new
NoHeapRealtimeThread
.memory
- The
MemoryParameters
associated with this
(and possibly other instances of
Schedulable
). If memory
is
null
, the new
NoHeapRealtimeThread
will have a
null
value for its memory parameters, and the
amount or rate of memory allocation is unrestricted.area
- The MemoryArea
associated with this. If area is null
, an
IllegalArgumentException
is thrown.group
- The
ProcessingGroupParameters
associated with this (and possibly other instances of
Schedulable
).
If null
, the new
NoHeapRealtimeThread
will not be associated
with any processing group.logic
- The Runnable
object whose run()
method will serve as the logic for the new
NoHeapRealtimeThread
. If logic is
null
, the run()
method in the new object
will serve as its logic.
java.lang.IllegalArgumentException
- Thrown if the parameters
are not compatible with the associated scheduler, if area
is null
, if area
is heap memory, if
area
, scheduling
, release
,
memory
or group
is allocated in heap memory,
if this is in heap memory, or if logic
is in heap memory.
IllegalAssignmentError
- Thrown if the new
NoHeapRealtimeThread
instance cannot hold
references to non-null values of scheduling
,
release
, memory
and group
,
or if those parameters cannot hold a
reference to the new
NoHeapRealtimeThread
.
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |